home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch7i < prev    next >
Encoding:
Internet Message Format  |  1990-02-26  |  59.7 KB

  1. Path: uunet!jarthur!usc!snorkelwacker!mit-eddie!uw-beaver!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v09i009:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch7i
  5. Message-ID: <5223@tekred.CNA.TEK.COM>
  6. Date: 24 Feb 90 00:35:14 GMT
  7. Sender: news@tekred.CNA.TEK.COM
  8. Lines: 1476
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 9, Issue 9
  13. Archive-name: NetHack3/Patch7i
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.  
  17.  
  18. #! /bin/sh
  19. # This is a shell archive.  Remove anything before this line, then unpack
  20. # it by saving it into a file and typing "sh file".  To overwrite existing
  21. # files, type "sh file -c".  You can also feed this as standard input via
  22. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  23. # will see the following message at the end:
  24. #        "End of archive 9 (of 30)."
  25. # Contents:  UPDATE7 patch7.17
  26. # Wrapped by billr@saab on Wed Feb 21 10:04:30 1990
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'UPDATE7' -a "${1}" != "-c" ; then 
  29.   echo shar: Renaming existing file \"'UPDATE7'\" to \"'UPDATE7.orig'\"
  30.   mv -f 'UPDATE7' 'UPDATE7.orig'
  31. fi
  32. echo shar: Extracting \"'UPDATE7'\" \(1596 characters\)
  33. sed "s/^X//" >'UPDATE7' <<'END_OF_FILE'
  34. XSorry this one took so long.  We think just about every computer and network
  35. Xwe depend on has broken sometime in last few weeks.
  36. X
  37. XWork on the PC overlay mechanism continues, with Kevin Smolkowski joining
  38. XPierre Martineau, Stephen Spackman, and Norm Meluch.  Breaking each .c file
  39. Xinto separately-swapped pieces should help performance considerably.  More
  40. Xchanges to the overlay manager are brewing, and will be distributed in the
  41. Xunfortunately required Patch 8.
  42. X
  43. XThe Amiga port was brought up to date and extended by Richard Addison,
  44. XJochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike Passaretti, and
  45. XGregg Wonderly.
  46. X
  47. XThe Macintosh port was futher extended by Kevin Sitze, Andy Swanson, Jon
  48. XWatte, and Tom West, working with Johnny Lee.
  49. X
  50. XSupport for recent versions of HP-UX was added by Steve Creps.
  51. X
  52. XWe believe all major various platforms and compilers are working properly now.
  53. X
  54. X
  55. XIn other news, '/' now distinguishes among monsters of a given class, named
  56. Xobjects (including artifacts) are handled better, an extended version command
  57. Xgives compilation options, monster colors should show up better, more
  58. Xoccupations are being stopped appropriately, unconscious and non-animal
  59. Xmonsters are handled better, and the eating behavior and ending messages have
  60. Xbeen overhauled again.
  61. X
  62. XVarious display nuisances have been fixed and the "worm segment", "nymph
  63. Xfreeinv", and combined nymph/succubus/polymorphing bugs are gone, along with
  64. Xa large number of less notorious problems.  A few more fun loopholes no longer
  65. Xexist.
  66. X
  67. XIn all, we think this is the stablest and most balanced version yet.
  68. X
  69. END_OF_FILE
  70. if test 1596 -ne `wc -c <'UPDATE7'`; then
  71.     echo shar: \"'UPDATE7'\" unpacked with wrong size!
  72. fi
  73. # end of 'UPDATE7'
  74. if test -f 'patch7.17' -a "${1}" != "-c" ; then 
  75.   echo shar: Renaming existing file \"'patch7.17'\" to \"'patch7.17.orig'\"
  76.   mv -f 'patch7.17' 'patch7.17.orig'
  77. fi
  78. echo shar: Extracting \"'patch7.17'\" \(55711 characters\)
  79. sed "s/^X//" >'patch7.17' <<'END_OF_FILE'
  80. X*** /dev/null    Mon Feb 19 17:43:37 1990
  81. X--- ./Install.ami    Mon Feb 19 16:24:51 1990
  82. X***************
  83. X*** 0 ****
  84. X--- 1,311 ----
  85. X+ 
  86. X+     Instructions for compiling and installing NetHack 3.0
  87. X+             on an AMIGA system
  88. X+     =====================================================
  89. X+             Last Revision: 17 Feb 1990
  90. X+ 
  91. X+ Overview
  92. X+ --------
  93. X+     This file contains the procedure to follow when installing NetHack 3.0
  94. X+     on an Amiga computer system.  It also includes some procedures and hints
  95. X+     for individuals desiring to create a binary from the source.  This
  96. X+     document is divided into 4 sections.  Section I deals with installing
  97. X+     already existing binaries and data files to create a working NetHack
  98. X+     game disk (or directory, in the case of a hard drive).  Section II
  99. X+     describes, in general, how to produce working binaries from the source.
  100. X+     Section III and IV are compiler specific sections, with section III
  101. X+     designed for Lattice users, and section IV for Manx/Aztec users.
  102. X+ 
  103. X+ Credits
  104. X+ -------
  105. X+     Olaf Seibert first ported NetHack 2.3 and 3.0 to the Amiga.  Richard
  106. X+     Addison, Jochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike
  107. X+     Passaretti, and Gregg Wonderly polished and extended the 3.0 port.
  108. X+ 
  109. X+ Section I - Installation Guide
  110. X+ -------------------------------
  111. X+     This section assumes you have the following handy:
  112. X+ 
  113. X+     * NetHack (executable code)
  114. X+     * Rumors file
  115. X+     * Oracle file
  116. X+     * All of the various help and informational files (help, opthelp, etc)
  117. X+     * Special level files (castle, tower1, tower2, tower3, endgame)
  118. X+     * Amiga with at least 1 meg memory (may be optimistic....)
  119. X+ 
  120. X+     And optionally:
  121. X+ 
  122. X+     * Icons if WorkBench interface is to be used.  These files include
  123. X+         + NetHack.info
  124. X+         + NewGame.info
  125. X+         + NetHackScore.info
  126. X+         + default.icon
  127. X+     * Special NetHack font.
  128. X+ 
  129. X+     Installation Steps:
  130. X+ 
  131. X+     1) If you have a hard disk, create a directory named NetHack.
  132. X+        Assign Nethack: to be the path to this directory.  If you have a
  133. X+        floppy, format a disk named NetHack.
  134. X+ 
  135. X+     2) If you have a hard disk, assign HackExe: to the above directory.
  136. X+        If you have a floppy, format an additional disk named HackExe.
  137. X+ 
  138. X+     3) Copy Nethack, NetHack.info, NewGame.info, and NetHackScore.info
  139. X+        to HackExe.  Create an empty file called NewGame (WorkBench
  140. X+        refuses to Duplicate a project icon without a file attached).
  141. X+ 
  142. X+     4) Copy the remainder of the files to NetHack:.  If you are using
  143. X+        the optional font, create a Hack subdirectory on NetHack:, and
  144. X+        copy "8" into it.
  145. X+ 
  146. X+     5) Configure NetHack.cnf as per your configuration.  Remember not
  147. X+        to set GRAPHICS if you are not using the optional font.
  148. X+ 
  149. X+     That's all there is to it!  If you are using the CLI interface, make sure
  150. X+     that the stack is set fairly large (at LEAST 40000 bytes).  Move to the
  151. X+     NetHack: directory, and type NetHack <cmd line options>.  If you're
  152. X+     using the WorkBench interface, click on the NetHack directory/disk.
  153. X+     You should see 3 icons.  Select the "NewGame" option, and "Duplicate" from
  154. X+     the WorkBench pull down menu.  This icon now represents your personal
  155. X+     profile.  You can now rename this icon, and tailor it to your liking
  156. X+     as described below.  If you start a game from the WorkBench interface,
  157. X+     saving the game will automatically tie the personal file icon with the
  158. X+     saved game.  So the next time you select your icon, the game will be
  159. X+     restored.
  160. X+ 
  161. X+     As mentioned above, the icon representing your personal profile can be
  162. X+     customized by you.  This is done via the the Info command available from
  163. X+     WorkBench.  You can adjust the following using the ToolTypes from the
  164. X+     WorkBench info command:
  165. X+ 
  166. X+     * OPTIONS=<options> - Options as avaliable in the NetHack.cnf file.
  167. X+ 
  168. X+     * HACKDIR=<directory> - Set NetHack working directory to be this
  169. X+       directory.
  170. X+ 
  171. X+     * RAMDISK=<ram disk> - Set up ram disk option.
  172. X+ 
  173. X+     * LEVELS=<levels> - Intermediate level saving device/directory.
  174. X+ 
  175. X+     * PATH=<path> - To search for files such as rumors, help, etc.
  176. X+ 
  177. X+     * CMDLINE=<args> - Arguments as passed on command line from cli.
  178. X+       Note:  only the following flags are valid at this point: n, X,
  179. X+       D, and r.
  180. X+ 
  181. X+     * SCORE <options> - Display the record of scores.  Options as
  182. X+       available on the command line from CLI after a -s flag.
  183. X+ 
  184. X+     Note that the NetHack.cnf file is read first, then the ToolTypes.  This
  185. X+     means that the options specified in the NetHack.cnf act as defaults
  186. X+     which can be overridden by an individual's personal icon's ToolTypes.
  187. X+     Thus the system oriented entries (HACKDIR, RAMDISK, LEVELS, and PATH)
  188. X+     should generally be set only in NetHack.cnf.  NetHack.cnf should have
  189. X+     default values for OPTIONS, which will generally be overridden by
  190. X+     ToolTypes entries.
  191. X+ 
  192. X+ Section II - General Compilation Instructions
  193. X+ ---------------------------------------------
  194. X+ 
  195. X+     1)  Before doing any compilation, read the README files distributed
  196. X+     with the source.  These should familiarize you with the
  197. X+     source tree layout, and what files are shared with what computers.
  198. X+     Generally, everything in the amiga directory is used exclusively by
  199. X+     the Amiga.
  200. X+ 
  201. X+     2)  Create the sub-directories, and name them as indicated in the source
  202. X+     README file.  If you have a hard drive, this is fairly trivial
  203. X+     (create a directory, and corresponding NetHack sub-directories).
  204. X+     If you have only floppies, you'll have to be a bit more clever.
  205. X+     The makefile (Makefile.ami) is set up to depend upon certain
  206. X+         assignments, providing the developer with a fairly flexible
  207. X+     environment.  The main directory with which a floppy user will have
  208. X+         problems is the src directory.  In order to fit all of the source on
  209. X+     to floppies, the src directory has been split into logical units.
  210. X+     For example, the makefile expects:
  211. X+ 
  212. X+         Src1:  contains src [a-l]*.c
  213. X+         Src2:  contains src [m-po]*.c
  214. X+         Src3:  contains src [pr-z]*.c
  215. X+ 
  216. X+     See makefile.ami for assignment assumptions.
  217. X+ 
  218. X+     3)  Edit config.h to your liking and system configuration.  The following
  219. X+     are strong suggestions for certain #define values.
  220. X+ 
  221. X+         + UNIX - DO NOT DEFINE
  222. X+         + MSDOS - DO NOT DEFINE HERE, IT WILL BE DONE LATER FOR YOU
  223. X+         + COMPRESS - DO NOT DEFINE
  224. X+         + ZEROCOMP - DEFINE
  225. X+         + CHDIR - RECOMMENDED
  226. X+         + HACKDIR - "NetHack:" MANDATORY
  227. X+         + BITFIELDS - DO NOT DEFINE IF YOU HAVE MANX3.6
  228. X+         + CLIPPING - DO NOT DEFINE
  229. X+ 
  230. X+     4) Edit amiconf.h to your liking.  It is recommended you leave
  231. X+        everything as is with the following exceptions:
  232. X+ 
  233. X+             + TEXTCOLOR - Will allow the use of colors for text objects in
  234. X+               the game.  For instance, red gems will be red.  Unfortunately,
  235. X+               at this time this is only configurable at compile time, when
  236. X+           it really should be configurable at run time.  Note also that
  237. X+           there is a slight bug when running textcolor, namely that when
  238. X+           you are polymorphed, the color you are is not correct because
  239. X+           the cursor overlays the default monster color.  You can see
  240. X+           yourself fine, but you do not represent the correct monster color.
  241. X+ 
  242. X+         + HACKFONT - Enable if you want to use the special NetHack font,
  243. X+           disable otherwise.
  244. X+ 
  245. X+             + AMIGA_WBENCH - Enable if you want the WorkBench interface to
  246. X+           be compiled into the code. This does NOT preclude you from
  247. X+               running from CLI.
  248. X+ 
  249. X+     5) If you have significant spare ram, you may wish to make your
  250. X+        compiler resident (Lattice 5.04's lc, lc1, and lc2 need about
  251. X+        215K while Manx's cc and as need about 135K).
  252. X+ 
  253. X+     6) At this point, you're almost ready to begin a compile.  Read VERY
  254. X+        CAREFULLY through the Makefile to familiarize yourself with which
  255. X+        assignments are assumed.  Otherwise, you're going to get something
  256. X+        like "Insert O_Src1: in any drive." requestors.  If you have the
  257. X+        uudecode program and need to uudecode the various *.uu files from
  258. X+        the Amiga: directory (font and icons), define the UUDEC symbol
  259. X+        at the appropriate place in the makefile.  The first thing
  260. X+        Makefile.ami does is build a program called 'makedefs', which
  261. X+        handles a variety of data file generation.  Makedefs will then be
  262. X+        run to create a few files, followed by an alphabetically sorted
  263. X+        compilation of the entire source tree.  This compilation process
  264. X+        will compile selected files from Amiga:, Others:, Src1:, Src2:,
  265. X+        and Src3: directories.  If all goes well, all of the  objects will
  266. X+        be linked together to form a binary.  With all of the options
  267. X+        enabled, the Manx 3.6 executable runs about 790K, and the Lattice
  268. X+        executable runs about 790K (without debug hunks, or about 1050K
  269. X+        with debug hunks - see below).
  270. X+ 
  271. X+ SECTION III - Lattice Compilation Instructions
  272. X+ ----------------------------------------------
  273. X+ 
  274. X+     If you're a Lattice user, you should be pretty well set up at this point.
  275. X+     If you have some spare ram, you may wish to examine the Amiga:compact.lat
  276. X+     script.  This script will reduce your compile time by using Lattice's
  277. X+     lcompact utility to pre-scan the header files and place compacted copies
  278. X+     onto the Ram: disk.  Read through the comments in that script if you
  279. X+     wish to utilize it.
  280. X+ 
  281. X+     Due to a problem with version 5.04, you must make one change:  edit the
  282. X+     file Others:lev_lex.c.  At (or near) line 1002 is the definition for the
  283. X+     function yyunput.  Delete the word "register" from this line.  Note that
  284. X+     if you neglect to do this, you will get an Error 72 at line 318 of file
  285. X+     lev_comp.l (this is the correct message - lev_lex.c is flex output).  Save
  286. X+     the changed file.  Later compiler versions may or may not need this fix.
  287. X+ 
  288. X+     Type 'CD NetHack:' and then type "lmk -f Amiga:Makefile.ami".  If all
  289. X+     goes well, you'll have a working binary a couple of hours later (depending
  290. X+     on your hardware configuration).  A couple of notes and warnings from the
  291. X+     Lattice users on the team:
  292. X+ 
  293. X+     * The primary Lattice compiler used on the Amiga port was version
  294. X+       5.04.  However, the patch bringing the compiler to 5.04a does
  295. X+       not appear necessary for compiling NH3.0pl7.
  296. X+ 
  297. X+     * The function monsndx, in file mondata.c, has a section of code
  298. X+       which Lattice 5.04 compiles incorrectly.  A hack has been written
  299. X+       around this so that Lattice will generate the correct code.  It is
  300. X+       recommended that you leave this in place, and not attempt to
  301. X+       "improve" it.  As of this date (1/90) Lattice is preparing 5.05
  302. X+       which, it is being claimed, fixes this bug.
  303. X+ 
  304. X+     * Included in the Lattice port is code for generating a SnapShot.tb
  305. X+       file upon catching various internal disasters.  That is why the
  306. X+       -d1 flag is in the makefile.  This adds about 270K to the disk
  307. X+       image, but it does not increase the run time memory requirements.
  308. X+       Floppy users will have to delete -d1 flag, or the binary won't
  309. X+       fit on a single disk.
  310. X+ 
  311. X+     * The optimizer seems to work, but no extensive testing has been
  312. X+       done with it.
  313. X+ 
  314. X+     * There are a large number of warnings under Lattice, which are
  315. X+       harmless.
  316. X+ 
  317. X+ SECTION IV  - AZTEC/MANX Compilation Instructions
  318. X+ -------------------------------------------------
  319. X+ 
  320. X+     NetHack 3.0 compiles and runs fine under Aztec 3.6, but a little bit
  321. X+     of work is necessary.  The problem is that the Aztec pre-processor
  322. X+     is fairly stupid, and doesn't recognize the defined() pre-processor
  323. X+     function.  Unfortunately, this function is laced throughout the NetHack
  324. X+     code, hence removing it would be quite a chore, and end up rendering the
  325. X+     code much more unreadable.
  326. X+ 
  327. X+     There are a couple solutions to this problem.  The first solution is to
  328. X+     run every source file through some c pre-processor which understands
  329. X+     defined() (the Decus cpp works fine).  The problem with this solution is
  330. X+     that the time it takes to compile/recompile is (at least) doubled.  My
  331. X+     configuration is a 33 meg hard drive and 2 1/2 megs of ram, and it still
  332. X+     takes over 4 hours to generate a binary from scratch!  Also note that
  333. X+     Makefile.ami was not built to support cpp, and so you'll have to modify
  334. X+     the makefile to add this step.
  335. X+ 
  336. X+     But don't despair, have we got a deal for you!  The Apple NetHackers also
  337. X+     had a similar problem with defined, which led them to developing a
  338. X+     defined() hack (located in config.h).  This hack basically adds
  339. X+     the defined() functionality to the Aztec pre-processor, with the exception
  340. X+     of performing this operation on strings.  Fortunately, using defined() on
  341. X+     strings is done very rarely, and they are handled on an individual basis.
  342. X+     (The only one I can think of right now is WIZARD/WIZARD_NAME).  What's the
  343. X+     catch, you ask?  Well, there is one. The problem is as follows.
  344. X+ 
  345. X+     The Aztec compiler doesn't know how to handle const, volatile, and signed
  346. X+     data types.  Normally, this can be fixed by sticking a #define const
  347. X+     before const is used, thereby rendering it disabled.  Unfortunately, the
  348. X+     Aztec pre-processor, in its infinite wisdom, WILL NOT LET YOU REDEFINE
  349. X+     these strings.
  350. X+ 
  351. X+     The solution to this is not quite as elegant as the solution to the
  352. X+     defined() problem above.  It requires a one time modification to the
  353. X+     Aztec cc binary.  (DO THIS TO A BACKUP COPY OF CC!!)  Find a disk zapper,
  354. X+     NewZap works fine.  Then do a search for the string 'const'.  Change
  355. X+     the const, signed and volatile strings to __nst, __gned and __latile.
  356. X+     (It's really not as bad as it sounds....)
  357. X+ 
  358. X+     A couple of warnings regarding the 3.6 compiler/NetHack:
  359. X+ 
  360. X+     * The 3.6 Manx bitfield handling is buggy at best.  Though I can't
  361. X+       specifically cite a flaw when NetHack is compiled with it, I
  362. X+       don't trust it.  I recommend you don't either.
  363. X+ 
  364. X+     * If your signal.h (in your Manx include directory) has SIGINT
  365. X+       commented out, go ahead and uncomment it.
  366. X+ 
  367. X+     * If you use the cpp method, pass -DAZTEC_C and -DMCH_AMIGA to
  368. X+           the cpp.  These are defined automatically by Aztec C, but are
  369. X+           ineffective if the source is run through a filter first.
  370. X+ 
  371. X+     * There will be a few harmless warnings in the compile process.
  372. X+       These warnings will be in amidos.c, and pickup.c.  There may also
  373. X+       be a warning when defining lev_lex.c that LEV_LEX is redefined.  This
  374. X+       is OK.  Any other warnings should be investigated.
  375. X+ 
  376. X+     * I haven't tried sdb on it, as I can't affort the disk space.  (You'll
  377. X+       have to save the intermediate cpp files if you cpp).  Unless you've
  378. X+           got a whopping amount of memory, I suspect it's going to be too large.
  379. X+ 
  380. X+     * There are 2 versions of lev_lex.c that are being distributed; one
  381. X+       generated by (unix) lex, and one generated by gnu flex.  The gnu
  382. X+       flex lev_lex.c should work without modification.  If you use the
  383. X+           lex lev_lex.c, you will get 4 warnings regarding ptr/int conversions.
  384. X+           Change the masks from (int) to (long) to generate a clean binary.
  385. X+ 
  386. X+     * Unfortunately, Manx 5.0 arrived too late to integrate into patch
  387. X+       level 7, but merging will occur in the next few weeks.  Contact us
  388. X+       (below) for progress/hints.
  389. X+ 
  390. X+             - - - - - - - - - - - -
  391. X+ 
  392. X+ If you have problems or questions, email to nethack-bugs@linc.cis.upenn.edu,
  393. X+ or directly to Greg Olson (golson@sundown.sun.com)  for Manx questions,
  394. X+ to Ken Lorber (keni@dtix.dt.navy.mil) for Lattice questions, or to
  395. X+ Richard Addison (addison@pollux.usc.edu) for either.  Have fun!!
  396. X*** /dev/null    Mon Feb 19 17:44:19 1990
  397. X--- ./Install.mac    Mon Feb 19 16:36:18 1990
  398. X***************
  399. X*** 0 ****
  400. X--- 1,237 ----
  401. X+ 
  402. X+ Instructions for installing NetHack 3.0 on a Macintosh system
  403. X+ =============================================================
  404. X+ 
  405. X+     (Credit for first porting NetHack 3.0 to the Macintosh goes to Johnny
  406. X+     Lee and Michael Sokolov.  Kevin Sitze, Andy Swanson, Jon Watte, and
  407. X+     Tom West helped polish and extend the port through further releases.)
  408. X+ 
  409. X+ 1.  Make sure all the NetHack files are in the appropriate directory structure.
  410. X+     You should have a main directory with subdirectories src, include, auxil,
  411. X+     mac, and others.  If you do not follow this structure, the Makefile
  412. X+     will not function properly.  All the UNIX .c files and the source Makefile
  413. X+     belong in src; all the PC .c files and Makefiles belong in others; all the
  414. X+     .h files belong in include; other assorted files belong in auxil.  The Mac
  415. X+     .c files belong in mac.
  416. X+ 
  417. X+ 2.  If you're not using Lightspeed/THINK C, move the .c files from the mac
  418. X+     folder, and the pc*.c files from others, to your src folder.  Also move
  419. X+     random.c from others to src if you want to use the Berkeley random number
  420. X+     routines (suggested).
  421. X+ 
  422. X+ 3.  If you are using Aztec C, you'll need the Makefile.src.  You'll have to
  423. X+     make minor modifications to make it work.  If you use Lightspeed/THINK C
  424. X+     the warning concerning the Makefile not functioning properly is a moot
  425. X+     point.
  426. X+ 
  427. X+ 4.  Go to the include subdirectory and edit config.h to select the desired
  428. X+     game options.  MACOS must be defined.
  429. X+     For compilers, you can select from LSC or THINKC4 (or AZTEC if you want to
  430. X+     do some work).  If you select AZTEC or LSC (not THINKC4) you'll have to
  431. X+     define KR1ED.  SMALLDATA should be defined (AZTEC users might be able to
  432. X+     get around it).  BITFIELDS should be defined if SMALLDATA was defined
  433. X+     in order to come in under the 32K global data limit.
  434. X+ 
  435. X+     The #defines that should be commented out are UNIX, and LOGFILE.
  436. X+ 
  437. X+     KR1ED sets up a macro which allows older preprocessors to make use of the
  438. X+     defined() construct.  
  439. X+     If you're using the Berkeley random number routines and KR1ED had
  440. X+     to be defined for your compiler, then you'll have to add the
  441. X+     line "#define defined(x) (-x - 1 != -1)" to random.c before the
  442. X+     first #if defined() statement. Do the same in mon.c.
  443. X+      
  444. X+     Similarly edit macconf.h.
  445. X+     
  446. X+     If you want to, look through system.h.  This file attempts to match the
  447. X+     types for system calls and library routines with various flavors of
  448. X+     operating systems.  Leaving this file alone is unlikely to cause problems,
  449. X+     but if you're using a different compiler and get compile errors with any
  450. X+     functions in the standard library, it's worth checking the declarations
  451. X+     there.
  452. X+ 
  453. X+     If you want to change the high score list behavior, go to the src
  454. X+     subdirectory and look at the top of topten.c.  You may want to change the
  455. X+     definitions of PERSMAX, POINTSMIN, and ENTRYMAX.  I set POINTSMIN of
  456. X+     51 and ENTRYMAX of 50 to keep the size of the score list down.
  457. X+ 
  458. X+ 5.  Decode the .hqx files with a BinHex decoder (BinHex or StuffIt 1.5.1) to
  459. X+     get the resource files for the makedefs and NetHack programs.
  460. X+ 
  461. X+ 6.  The source files needed for makedefs are:
  462. X+ 
  463. X+         alloc.c, macfile.c, makedefs.c, monst.c, objects.c and panic.c
  464. X+ 
  465. X+     You'll have to uncomment the "#define MAKEDEFS_C" statement in
  466. X+     config.h. This is used especially to construct the monst and object
  467. X+     resources for the NetHack application.
  468. X+     Remember to comment out this define again when not compiling makedefs.
  469. X+     In the "Set Project Type..." dialog, select "Separate STRS" to keep the
  470. X+     project's global data under 32K.
  471. X+ 
  472. X+     Add in the necessary libraries (this will vary with what compiler you are
  473. X+     using - in Think C 4.0 it will be ANSI, unix, and MacTraps, or get the
  474. X+     libraries from the routines that your linker complains aren't there).
  475. X+ 
  476. X+     Compile and run makedefs and select all the options [Note: you'll have to
  477. X+     run makedefs several times to do this].  This will build the various
  478. X+     include and auxiliary files.
  479. X+ 
  480. X+     N.B. Lightspeed/Think C users:  you really can't use precompiled headers
  481. X+     here since there is no ONE header file.  It is such a small app. that
  482. X+     the benefit of precompiled headers is small.
  483. X+ 
  484. X+ 7.  Build the NetHack project with the source files in the various code
  485. X+     segments as specified in "Segments.mac".  (For Lightspeed/THINK C users,
  486. X+     I suggest adding each file in the proper segment as you build the
  487. X+     project.)  If you are using Think C v.4,  you may just unBinHex the supplied
  488. X+     NH3.proj.hqx file.
  489. X+ 
  490. X+     Uncomment the CUSTOM_IO #define.
  491. X+     
  492. X+     If you use precompiled headers in Lightspeed C v.3 or Think C v.4
  493. X+     you'll have to rename "hack.h" to something else.
  494. X+     Precompile the renamed hack.h file and save this as "hack.h".  You'll
  495. X+     probably will want to precompile "config.h" also.  In order for the
  496. X+     precompiled headers to work, they must be the first #include/#define
  497. X+     statement in every source file.  Certain source files contain
  498. X+     "#define xxxxxxx" before the first "#include hack.h";
  499. X+     the #defines can just be commented out. 
  500. X+     Files that will have to be altered in this manner include end.c,
  501. X+     extralev.c, mon.c, pager.c, priest.c, save.c, shk.c, sounds.c, topl.c,
  502. X+     and topten.c.
  503. X+     To do this effortlessly, you can use the Grep feature in the Find
  504. X+     dialog box.
  505. X+ 
  506. X+     Assuming, all the source files are in a project, select Find... from
  507. X+     the Search menu.
  508. X+     Select the checkbox "Grep" and press Command-A to search all source files.
  509. X+     Type the following into the "Search for:" field:
  510. X+         \(#.*pre-compiled headers \*\/\)
  511. X+     Type the following into the "Replace with:" field.
  512. X+         /* \1
  513. X+     Then press the Find button in the dialog box. After the first time
  514. X+     it locates the pattern, select Replace All from the Search menu.
  515. X+     Afterwards, select Find in Next File and select Replace All for
  516. X+     every file the pattern is located in, until you have reached the end.
  517. X+ 
  518. X+     In mon.c, though, you'll have to comment out the #if to avoid the
  519. X+     Microport bug, by hand.
  520. X+ 
  521. X+     Also make sure that you aren't auto-including "MacHeaders"
  522. X+     (under the "Options..." menu item, Code Generation).
  523. X+ 
  524. X+     In the "Set Project Type..." dialog, select Application,
  525. X+     File type 'APPL', Creator 'nh30', Separate STRS, enter 750 for
  526. X+     Partition Size and select Multifinder-Aware and Suspend & Resume
  527. X+     Events from the Multifinder Popup menu.
  528. X+ 
  529. X+     An executable with all features set, except for STRONGHOLD, will be around
  530. X+     650K in size.
  531. X+ 
  532. X+ 8.  For ease of use make sure the support files data, rumors, cmdhelp, opthelp,
  533. X+     help, hh, history, and license (and oracles, if you compiled in that
  534. X+     feature) got copied to the game directory.  If not, move them there from
  535. X+     the auxil directory yourself.  The rumors file can be created by selecting
  536. X+     'rumors' from makedefs; data by selecting 'data' from makedefs.
  537. X+     The record file will be created by makedefs.
  538. X+ 
  539. X+     You'll have to create a TEXT file called "news" if you want this option
  540. X+     to work. The makedefs project will set the icon for this file.
  541. X+ 
  542. X+     If you're industrious you might try working on the special files. If you
  543. X+     compiled in the special levels, make sure castle, tower? and endgame are in
  544. X+     the game folder, too.  The lev_comp project will create these.  You may use
  545. X+     precompiled headers here - just make sure they are the first #include or
  546. X+     #define in the lev*.c files.  THINK C 4 users should make sure that stdio.h
  547. X+     won't try to include itself twice by prepending a
  548. X+ 
  549. X+         #ifndef _H_stdio
  550. X+         #define _H_stdio
  551. X+ 
  552. X+     to the beginning of stdio.h and a corresponding #endif at the end of the
  553. X+     file.
  554. X+ 
  555. X+     The necessary source files for the special level compiler are:
  556. X+         alloc.c, lev_comp.c, lev_lex.c, lev_main.c, monst.c, objects.c,
  557. X+         and panic.c.
  558. X+ 
  559. X+     Ensure that "#define MAKEDEFS_C" is undefined in config.h
  560. X+     as the special level compiler makes use of the resources created
  561. X+     in the makedefs project.
  562. X+     A couple of changes needed in lev_lex.c which couldn't be incorporated into
  563. X+     lev_lex.l (at least not now) if SMALLDATA is used:
  564. X+ 
  565. X+     Change
  566. X+         FILE *yyin ={stdin}, *yyout ={stdout};
  567. X+     to
  568. X+         FILE *yyin =stdin, *yyout =stdout;
  569. X+ 
  570. X+     Change
  571. X+         int yyleng; extern char yytext[];
  572. X+         int yymorfg;
  573. X+         extern char *yysptr, yysbuf[];
  574. X+     to
  575. X+     int yyleng; extern char *yytext;
  576. X+     int yymorfg;
  577. X+     extern char *yysptr, *yysbuf;
  578. X+ 
  579. X+     Change
  580. X+         char yytext[YYLMAX];
  581. X+     to
  582. X+         char *yytext;
  583. X+ 
  584. X+     Change
  585. X+         char yysbuf[YYLMAX];
  586. X+         char *yysptr = yysbuf;
  587. X+     to
  588. X+         char *yysbuf;
  589. X+         char *yysptr;
  590. X+ 
  591. X+     Change
  592. X+         #endif not lint
  593. X+     to
  594. X+         #endif /* not lint */
  595. X+ 
  596. X+     If you're using precompiled headers, you'll have to move the line
  597. X+     #include "hack.h" to the top of the file, before #include "stdio.h"
  598. X+     
  599. X+     You will have to comment out the second #define NLSTATE if you're using
  600. X+     Lightspeed/THINK C.  There is code in lev_main.c to handle the changes.
  601. X+     In the "Set Project Type..." dialog, select "Separate STRS" to keep the
  602. X+     project's global data under 32K.
  603. X+ 
  604. X+     In lev_main.c you'll have to uncomment the #include "hack.h" at the
  605. X+     top of the file.
  606. X+ 
  607. X+     Add in the necessary libraries to the project - these should be the
  608. X+     same libraries used in the makedefs project.
  609. X+ 
  610. X+ Notes:
  611. X+ 1.  Save files and bones files from previous versions will not work with
  612. X+     NetHack 3.0.  Don't bother trying to keep them.  Record (score) files
  613. X+     from before 3.0 patchlevel 7 will almost work, but you need to make one
  614. X+     change manually to them:  At the end of each line is a word or phrase
  615. X+     specifying what killed the player.  Change the string to start with the
  616. X+     words "killed by", "killed by a", or "killed by an" (whichever is
  617. X+     appropriate).  If the death was petrification, it should read "petrified
  618. X+     by" instead of "killed by".  Don't change "starvation", "quit", "escaped",
  619. X+     or "ascended".
  620. X+ 
  621. X+ 2.  For Aztec C:
  622. X+     To install an update of this version of NetHack after changing something,
  623. X+     type 'make' from the src directory.  If you created the new version
  624. X+     yourself, it should be safe to use 'make update' as long as you did not
  625. X+     add, delete, or reorder monsters or objects and you did not change 
  626. X+     the format of saved level files.  If you did any of these things, you
  627. X+     should also delete any saved games and bones levels.  (Trying to use such
  628. X+     files often produces amusing but useless confusions on the game's part.)
  629. X+ 
  630. X+ 3.  If you have any problems with Lightspeed/THINK C you might try these
  631. X+     two suggestions:
  632. X+            a) Increase the Partition Size for NetHack to >750K.
  633. X+     and/or b) Remove all the objects from the Project and do a full build.
  634. X+ 
  635. X+     On a Mac II you will have NetHack in about 30 minutes.
  636. X+     Hope you enjoy the game.  We have worked very hard to try to bring it
  637. X+     to the Mac.
  638. X*** ./Old/Install.unix    Mon Feb 19 17:44:32 1990
  639. X--- ./Install.unix    Fri Feb  2 18:24:58 1990
  640. X***************
  641. X*** 3,15 ****
  642. X  
  643. X  1.  Make sure all the NetHack files are in the appropriate directory structure.
  644. X      You should have a main directory with subdirectories src, include, auxil,
  645. X!     amiga, and others.  If you do not follow this structure, the Makefiles
  646. X!     will not function properly.  All the UNIX .c files and the source Makefile
  647. X!     belong in src; all the .h files belong in include; other assorted files
  648. X!     belong in auxil.  The UNIX version does not use any files from amiga or
  649. X!     others, except possibly for random.c from others, as explained in step 6.
  650. X!     (A more detailed explanation of the directory structure may be found in
  651. X!     Files, which should be in the top directory.)
  652. X  
  653. X  2.  Your Makefiles may still have tags on the end of them.  Makefile.top should
  654. X      become Makefile in the top directory, Makefile.src Makefile in the src
  655. X--- 3,16 ----
  656. X  
  657. X  1.  Make sure all the NetHack files are in the appropriate directory structure.
  658. X      You should have a main directory with subdirectories src, include, auxil,
  659. X!     amiga, mac, vms, and others.  If you do not follow this structure, the
  660. X!     Makefiles will not function properly.  All the UNIX .c files and the
  661. X!     source Makefile belong in src; all the .h files belong in include; other
  662. X!     assorted data files belong in auxil.  The UNIX version does not use any
  663. X!     files from the other directories, except possibly for random.c from
  664. X!     others, as explained in step 6.  (A more detailed explanation of the
  665. X!     directory structure may be found in Files, which should be in the top
  666. X!     directory.)
  667. X  
  668. X  2.  Your Makefiles may still have tags on the end of them.  Makefile.top should
  669. X      become Makefile in the top directory, Makefile.src Makefile in the src
  670. X***************
  671. X*** 53,66 ****
  672. X      terminal capability libraries.  Make sure that the TERMINFO definition in
  673. X      unixconf.h and the TERMLIB definition in the source Makefile correspond.
  674. X      If spurious characters appear on the screen while kicking, zapping, etc.,
  675. X!     it is likely that you have linked the source to the wrong library.
  676. X!     If your terminal library does not provide suitable delays, NetHack will
  677. X!     try to fake its own if you set the nonull option.
  678. X  
  679. X! 2.  No, your old save files and bones files will not work with NetHack 3.0.
  680. X!     Don't bother trying to keep them.  The old score list will work fine; the
  681. X!     only problem is that you may have trouble beating your old scores in this
  682. X!     version.
  683. X  
  684. X  3.  If you insisted on doing the final installation by hand, you probably
  685. X      forgot to make a save directory.  If you don't go back and do this, you
  686. X--- 54,73 ----
  687. X      terminal capability libraries.  Make sure that the TERMINFO definition in
  688. X      unixconf.h and the TERMLIB definition in the source Makefile correspond.
  689. X      If spurious characters appear on the screen while kicking, zapping, etc.,
  690. X!     it is likely that you have linked the source to the wrong library or
  691. X!     mistakenly defined/undefined TERMINFO.  If your terminal library does not
  692. X!     provide suitable delays, NetHack will try to fake its own if you set the
  693. X!     nonull option.
  694. X  
  695. X! 2.  Save files and bones files from previous versions will not work with
  696. X!     NetHack 3.0.  Don't bother trying to keep them.  Record (score) files
  697. X!     from before 3.0 patchlevel 7 will almost work, but you need to make one
  698. X!     change manually to them:  At the end of each line is a word or phrase
  699. X!     specifying what killed the player.  Change the string to start with the
  700. X!     words "killed by", "killed by a", or "killed by an" (whichever is
  701. X!     appropriate).  If the death was petrification, it should read "petrified
  702. X!     by" instead of "killed by".  Don't change "starvation", "quit", "escaped",
  703. X!     or "ascended".
  704. X  
  705. X  3.  If you insisted on doing the final installation by hand, you probably
  706. X      forgot to make a save directory.  If you don't go back and do this, you
  707. X***************
  708. X*** 85,87 ****
  709. X--- 92,102 ----
  710. X  6.  If you get unexplained deaths by trickery, you are probably running
  711. X      NetHack on a bunch of workstations, but you have overlooked the NETWORK
  712. X      definition in unixconf.h that is necessary in that configuration.
  713. X+ 
  714. X+ 7.  If you are trying to compile NetHack on an AT&T 3B that is running an
  715. X+     OS earlier than SVR3, you are likely to have problems with overflowing
  716. X+     symbol tables.  This can be worked around by editing the source Makefile
  717. X+     to make the Sys.3B2 target work more like the SysV-AT target, adding
  718. X+     -DDUMB to CFLAGS and DUMB.Setup to the Sys.3B2 dependency line.  The
  719. X+     compiler provided with later versions of the OS has a large enough
  720. X+     symbol table that it does not need this workaround.
  721. X*** /dev/null    Mon Feb 19 17:44:45 1990
  722. X--- ./Install.vms    Fri Feb  2 18:25:03 1990
  723. X***************
  724. X*** 0 ****
  725. X--- 1,102 ----
  726. X+ 
  727. X+ Instructions for installing NetHack 3.0 on a VMS system
  728. X+ =======================================================
  729. X+ 
  730. X+ 1.  Make sure all the NetHack files are in the appropriate directory
  731. X+     structure.  You should have a main directory with subdirectories [.src],
  732. X+     [.include], [.auxil], [.amiga], [.mac], [.vms], and [.others].  If you do
  733. X+     not follow this structure, the instructions in this file will not function
  734. X+     properly.  The .c files in [.src] are files which are used by all versions
  735. X+     of NetHack, regardless of machine (there are a few UNIX specific files,
  736. X+     but we can ignore them).  All the VMS specific .c files and some .com
  737. X+     files belong in [.vms].  All the .h files belong in [.include].  Other
  738. X+     assorted files belong in [.auxil].  The VMS version does not use any files
  739. X+     from [.amiga], [.mac], or [.others], except possibly for random.c from
  740. X+     others, as explained in step 6.  (A more detailed explanation of the
  741. X+     directory structure may be found in Files, which should be in the top
  742. X+     directory.)
  743. X+ 
  744. X+ 2.  Go to the [.include] directory and edit config.h according to the comments
  745. X+     to match your system and desired set of features.  Similarly edit
  746. X+     vmsconf.h.
  747. X+ 
  748. X+ 3.  If you want to, look through system.h.  This file attempts to match the
  749. X+     types for system calls and library routines with various flavors of
  750. X+     operating systems.  Leaving this file alone is unlikely to cause problems,
  751. X+     but it's worth checking if you get compile errors, especially if you have
  752. X+     an unusual configuration.
  753. X+ 
  754. X+ 4.  Go to the [.src] directory and look at the top of topten.c.  You may want
  755. X+     to change the definitions of PERSMAX and PERS_IS_UID here to get different
  756. X+     behavior from the high score list.
  757. X+ 
  758. X+ 5.  If you are using GCC rather than VAX C as your compiler, you will need to
  759. X+     edit [.vms]vmsbuild.com to change the definition of the 'cc' command
  760. X+     (comment out the "CC" definition and un-comment the "GCC" definition).
  761. X+     Also un-comment the reference to gcclib in the link command.
  762. X+ 
  763. X+ 6.  If you elected to not use the provided (BSD) random routines (by changing
  764. X+     [.include]vmsconf.h), you will need to remove the references to random.c
  765. X+     and random.obj from [.vms]vmsbuild.com.
  766. X+ 
  767. X+ 7.  SET DEFAULT to [.src] and type '@[-.vms]vmsbuild', then go get a cup of
  768. X+     coffee or take a nap.  You should now have created the game executable.
  769. X+ 
  770. X+ 8.  Edit [.vms]spec_lev.com to reflect the versions of lex/flex/yacc/bison
  771. X+     you wish to use.  If you don't have any lex/yacc, you may be able to use
  772. X+     the versions of lev_lex.c and lev_comp.c supplied with the distribution,
  773. X+     although they were probably produced on a Unix system and may have some
  774. X+     non-portable constructs.
  775. X+ 
  776. X+ 9.  Type @[-.vms]spec_lev to set up files for some of the special levels.
  777. X+ 
  778. X+ 10. Go back to the main directory.  Edit [.vms]install.com to indicate where
  779. X+     you want everything to be installed.  Type @[.vms]install and everything
  780. X+     should be set.
  781. X+ 
  782. X+ Notes:
  783. X+ 
  784. X+ 1.  VMS Nethack uses the termcap routines supplied with GNU Emacs.  These have
  785. X+     been supplied for those who do not already have GNU Emacs, but they are
  786. X+     not properly a part of the NetHack distribution.  Since these files
  787. X+     (vmstermcap.c and vmstparam.c) bear the usual GNU license, any executable
  788. X+     made with these files is also under the GNU license, which among other
  789. X+     things means you must be prepared to distribute all the source that went
  790. X+     into the executable if you distribute the executable.  See the GNU license
  791. X+     in the files for further details.
  792. X+ 
  793. X+ 2.  No termcap file is supplied.  One should be snarfable from any Unix
  794. X+     system.  If you do not have GNU Emacs installed, you will need to define
  795. X+     the logical TERMCAP to point to the termcap file.
  796. X+ 
  797. X+ 3.  There is code which attempts to make Nethack secure in case it is
  798. X+     installed with privileges (to allow the playground to be protected against
  799. X+     world write).  THIS HAS NOT BEEN TESTED.  Install Nethack with privileges
  800. X+     at your own risk.  If you do so, however, we would love to hear of your
  801. X+     experiences, good or bad.
  802. X+ 
  803. X+ 4.  VMS Nethack uses SMG$READ_KEYSTROKE to read characters from the keyboard.
  804. X+     This means that arrow keys work!  It also means that using escape to abort
  805. X+     commands doesn't!  If you want to abort a command use ^Z.  Just about any
  806. X+     non-arrow function key should also work.  Note that under Unix ^Z is the
  807. X+     suspend command.  This is of little use on VMS so our use is harmless.
  808. X+ 
  809. X+ 5.  Nethack does not run in PASTHRU or PASSALL mode.  This is to allow ^C
  810. X+     interrupts.  An unpleasant (albeit minor) side-effect of this is that some
  811. X+     wizard commands don't work (^G, ^O, ^X).  Another side-effect is that ^Y
  812. X+     and ^C echo the stupid, inverse-video "CANCEL" and "INTERRUPT" banners.
  813. X+     Is there no way other than PASTHRU/PASSALL to turn these off???
  814. X+ 
  815. X+ 6.  To install an update of this version of NetHack after changing something
  816. X+     you will have to go through almost the entire build process (unless you
  817. X+     know for certain exactly what needs to be rebuilt).  If you added,
  818. X+     deleted, or reordered monsters or objects or changed the format of saved
  819. X+     level files, you should also remove any saved games and bones levels.
  820. X+     (Trying to use such files often produces amusing but useless confusions on
  821. X+     the game's part.)
  822. X+ 
  823. X+ 7.  As of 3.0 patchlevel 7, the format of the record (score) file has been
  824. X+     changed.  If you want to use your old record file, manually edit it so that
  825. X+     the killer (last item on each line) is preceded by "killed by", "killed by
  826. X+     a", or "killed by an".  If the death was by petrification, use "petrified
  827. X+     by" instead.  Do not change "starvation", "quit", "escaped", or "ascended".
  828. X*** ./Old/README    Mon Feb 19 17:45:17 1990
  829. X--- ./README    Tue Feb  6 18:44:32 1990
  830. X***************
  831. X*** 77,98 ****
  832. X  
  833. X      At the time of this release, NetHack 3.0 is known to run on:
  834. X  
  835. X!     DEC vaxen running Ultrix and BSD
  836. X!     Sun-3s running SunOS 4.0
  837. X!     Encore Multimax running UMAX 4.2
  838. X!     Bull XPS100 running System V R2.2 or R3.1
  839. X!     Bull DPX/2 200 running System V R3.1
  840. X!     AT&T 3B4000 running System V
  841. X!     AT&T 3B1 running System V (3.51)
  842. X!     286 box running Microport SysV/AT (not extensively tested)
  843. X!     IBM PC compatibles running MicroSoft C or Turbo C under MS-DOS
  844. X!     Commodore Amiga (probably -- there have been some changes since
  845. X!         the Amiga port was done, but we believe it should still work)
  846. X!     Atari 1040ST under TOS
  847. X!     DEC vaxen running VMS (probably still requires tweaking) 
  848. X!     Data General AViiON systems under DG/UX
  849. X          Valid Logic Systems SCALD-System
  850. X          Macintosh (still requires testing)
  851. X  
  852. X              - - - - - - - - - - -
  853. X  
  854. X--- 77,105 ----
  855. X  
  856. X      At the time of this release, NetHack 3.0 is known to run on:
  857. X  
  858. X!         DEC vaxen running Ultrix and BSD
  859. X!         Sun-3s running SunOS 4.0
  860. X!         Encore Multimax running UMAX 4.2
  861. X!         Bull XPS100 running System V R2.2 or R3.1
  862. X!         Bull DPX/2 200 running System V R3.1
  863. X!         AT&T 3B4000 running System V
  864. X!         AT&T 3B1 running System V (3.51)
  865. X!         AT&T 3B2/600 & 3B2/622 running System V R3.2.1
  866. X!         AT&T 3B2/1000 Model 80 running System V R3.2.2
  867. X!         286 box running Microport SysV/AT (not extensively tested)
  868. X!         IBM PC compatibles running MicroSoft C or Turbo C under MS-DOS
  869. X!         IBM PS/2 and AT compatibles running MicroSoft C under OS/2
  870. X!         Commodore Amiga running Lattice or Manx/Aztec C under
  871. X!         AmigaDOS 1.3 (WorkBench 1.3, KickStart 1.2 or 1.3)
  872. X!         Atari 1040ST under TOS
  873. X!         DEC vaxen running VMS
  874. X!         Data General AViiON systems under DG/UX
  875. X          Valid Logic Systems SCALD-System
  876. X          Macintosh (still requires testing)
  877. X+         Mips M2000 running RiscOS 4.1
  878. X+         Gould NP1 running UTX 3/2
  879. X+         Stride 460 running UniStride 2.1
  880. X+         Pyramid 9820x running OSx 4.4c
  881. X  
  882. X              - - - - - - - - - - -
  883. X  
  884. X*** /dev/null    Mon Feb 19 16:41:39 1990
  885. X--- vms/Install.com    Sun Jan 21 15:08:23 1990
  886. X***************
  887. X*** 0 ****
  888. X--- 1,20 ----
  889. X+ $ gamedir = "USR$ROOT0:[GENTZEL.NHDIR]"
  890. X+ $ gameuic = "GENTZEL"
  891. X+ $
  892. X+ $ set default [.src]
  893. X+ $ mcr sys$disk:[]makedefs -d
  894. X+ $ mcr sys$disk:[]makedefs -r
  895. X+ $ set default [-]
  896. X+ $
  897. X+ $! set up the directories
  898. X+ $ create/directory/owner='gameuic'/prot=(s:rwed,o:rwed,g:rwed,w:rwed) -
  899. X+     'f$string(gamedir - "]" + ".SAVE]")'
  900. X+ $! create some files
  901. X+ $ create/prot=(s:rwed,o:rwed,g:rwed,w:rwed) 'gamedir'perm.,record.,logfile.
  902. X+ $! copy over the game files
  903. X+ $ copy/prot=(s:re,o:re,g:re,w:re) [.auxil]help.,hh,cmdhelp,history,opthelp, -
  904. X+     oracles,data,rumors,endgame,castle,tower1,tower2,tower3,license -
  905. X+     'gamedir'
  906. X+ $ copy/prot=(s:re,o:re,g:re,w:re) [.src]nethack.exe 'gamedir'
  907. X+ $! set up the permissions
  908. X+ $ set file/owner='gameuic' 'gamedir'*.*;*
  909. X*** vms/Old/vmsbuild.com    Mon Feb 19 16:42:05 1990
  910. X--- vms/vmsbuild.com    Tue Feb  6 19:02:10 1990
  911. X***************
  912. X*** 1,8 ****
  913. X--- 1,10 ----
  914. X  $ makedefs := $sys$disk:[]makedefs
  915. X  $ cc = "CC/NOLIST/OPT=NOINLINE/DEB/INCL=[-.INCLUDE]/DEFI=(""WIZARD=""""GENTZEL"""""")"
  916. X+ $! cc = "GCC/DEB/INCL=[-.INCLUDE]/DEFI=(""WIZARD=""""GENTZEL"""""")/CC1=""-fwritable-strings"""
  917. X  $ link := link/nomap'p2'
  918. X  $ if p1 .eqs. "LINK" then goto link
  919. X  $ define sys sys$library:
  920. X+ $ ! /obj=file doesn't work for GCC 1.36, so use rename instead
  921. X  $ cc alloc.c
  922. X  $ cc makedefs.c
  923. X  $ cc monst.c
  924. X***************
  925. X*** 41,47 ****
  926. X  $ cc invent.c
  927. X  $ cc lock.c
  928. X  $ cc mail.c
  929. X! $ cc [-.vms]vmsmain.c/obj=main.obj
  930. X  $ cc makemon.c
  931. X  $ cc mcastu.c
  932. X  $ cc mhitm.c
  933. X--- 43,50 ----
  934. X  $ cc invent.c
  935. X  $ cc lock.c
  936. X  $ cc mail.c
  937. X! $ cc [-.vms]vmsmain.c
  938. X! $ rename vmsmain.obj main.obj
  939. X  $ cc makemon.c
  940. X  $ cc mcastu.c
  941. X  $ cc mhitm.c
  942. X***************
  943. X*** 86,95 ****
  944. X  $ cc topten.c
  945. X  $ cc track.c
  946. X  $ cc trap.c
  947. X! $ cc [-.vms]vmstty.c/obj=tty.obj
  948. X  $ cc u_init.c
  949. X  $ cc uhitm.c
  950. X! $ cc [-.vms]vmsunix.c/obj=unix.obj
  951. X  $ cc vault.c
  952. X  $ makedefs -v
  953. X  $ cc version.c
  954. X--- 89,100 ----
  955. X  $ cc topten.c
  956. X  $ cc track.c
  957. X  $ cc trap.c
  958. X! $ cc [-.vms]vmstty.c
  959. X! $ rename vmstty.obj tty.obj
  960. X  $ cc u_init.c
  961. X  $ cc uhitm.c
  962. X! $ cc [-.vms]vmsunix.c
  963. X! $ rename vmsunix.obj unix.obj
  964. X  $ cc vault.c
  965. X  $ makedefs -v
  966. X  $ cc version.c
  967. X***************
  968. X*** 102,108 ****
  969. X  $ cc write.c
  970. X  $ cc zap.c
  971. X  $ cc [-.others]random.c
  972. X! $ cc/def="bcopy(s1,s2,sz)=memcpy(s2,s1,sz)" [-.vms]vmstermcap.c
  973. X  $ cc [-.vms]vmstparam.c
  974. X  $link:
  975. X  $ link/exe=nethack sys$input:/opt
  976. X--- 107,116 ----
  977. X  $ cc write.c
  978. X  $ cc zap.c
  979. X  $ cc [-.others]random.c
  980. X! $ create vmstermcap.c
  981. X! #define bcopy(s,d,n) memcpy(d,s,n)
  982. X! $ append [-.vms]vmstermcap.c []
  983. X! $ cc vmstermcap.c
  984. X  $ cc [-.vms]vmstparam.c
  985. X  $link:
  986. X  $ link/exe=nethack sys$input:/opt
  987. X***************
  988. X*** 200,202 ****
  989. X--- 208,211 ----
  990. X  vmstermcap.obj,-
  991. X  vmstparam.obj
  992. X  sys$library:vaxcrtl/library
  993. X+ !gnu_cc:[000000]gcclib/library
  994. X*** vms/Old/vmsmain.c    Mon Feb 19 16:42:18 1990
  995. X--- vms/vmsmain.c    Sun Feb 11 11:29:15 1990
  996. X***************
  997. X*** 3,15 ****
  998. X  /* NetHack may be freely redistributed.  See license for details. */
  999. X  /* main.c - VMS NetHack */
  1000. X  
  1001. X- #include <signal.h>
  1002. X- 
  1003. X  #include "hack.h"
  1004. X  
  1005. X  char SAVEF[PL_NSIZ + 20];            /* [.save]<uic>player;1 */
  1006. X  
  1007. X! char *hname = 0;        /* name of the game (argv[0] of call) */
  1008. X  char obuf[BUFSIZ];    /* BUFSIZ is defined in stdio.h */
  1009. X  int hackpid = 0;                /* current pid */
  1010. X  int locknum = 0;                /* max num of players */
  1011. X--- 3,15 ----
  1012. X  /* NetHack may be freely redistributed.  See license for details. */
  1013. X  /* main.c - VMS NetHack */
  1014. X  
  1015. X  #include "hack.h"
  1016. X  
  1017. X+ #include <signal.h>
  1018. X+ 
  1019. X  char SAVEF[PL_NSIZ + 20];            /* [.save]<uic>player;1 */
  1020. X  
  1021. X! const char *hname = 0;        /* name of the game (argv[0] of call) */
  1022. X  char obuf[BUFSIZ];    /* BUFSIZ is defined in stdio.h */
  1023. X  int hackpid = 0;                /* current pid */
  1024. X  int locknum = 0;                /* max num of players */
  1025. X***************
  1026. X*** 213,219 ****
  1027. X  
  1028. X      Sprintf(SAVEF, "[.save]%d%s", getuid(), plname);
  1029. X      regularize(SAVEF+7);    /* avoid bogus chars in name */
  1030. X!     if((fd = open(SAVEF,0)) >= 0 &&
  1031. X         (uptodate(fd) || unlink(SAVEF) >= 0)) {
  1032. X  #ifdef WIZARD
  1033. X          /* Since wizard is actually flags.debug, restoring might
  1034. X--- 213,220 ----
  1035. X  
  1036. X      Sprintf(SAVEF, "[.save]%d%s", getuid(), plname);
  1037. X      regularize(SAVEF+7);    /* avoid bogus chars in name */
  1038. X!     if((fd = open(SAVEF,O_RDONLY)) >= 0 &&
  1039. X!        /* if not up-to-date, quietly unlink file via false condition */
  1040. X         (uptodate(fd) || unlink(SAVEF) >= 0)) {
  1041. X  #ifdef WIZARD
  1042. X          /* Since wizard is actually flags.debug, restoring might
  1043. X***************
  1044. X*** 221,228 ****
  1045. X           */
  1046. X          boolean remember_wiz_mode = wizard;
  1047. X  #endif
  1048. X          (void) signal(SIGINT, (SIG_RET_TYPE) done1);
  1049. X!         pline("Restoring old save file...");
  1050. X          (void) fflush(stdout);
  1051. X          if(!dorecover(fd))
  1052. X              goto not_recovered;
  1053. X--- 222,230 ----
  1054. X           */
  1055. X          boolean remember_wiz_mode = wizard;
  1056. X  #endif
  1057. X+         (void) chmod(SAVEF,0);    /* disallow parallel restores */
  1058. X          (void) signal(SIGINT, (SIG_RET_TYPE) done1);
  1059. X!         pline("Restoring save file...");
  1060. X          (void) fflush(stdout);
  1061. X          if(!dorecover(fd))
  1062. X              goto not_recovered;
  1063. X***************
  1064. X*** 240,246 ****
  1065. X          if (discover || wizard) {
  1066. X              pline("Do you want to keep the save file? ");
  1067. X              if(yn() == 'n')
  1068. X!                 (void) unlink(SAVEF);
  1069. X          }
  1070. X  #endif
  1071. X          flags.move = 0;
  1072. X--- 242,250 ----
  1073. X          if (discover || wizard) {
  1074. X              pline("Do you want to keep the save file? ");
  1075. X              if(yn() == 'n')
  1076. X!                 (void) unlink(SAVEF);
  1077. X!             else
  1078. X!                 (void) chmod(SAVEF,FCMASK); /* back to readable */
  1079. X          }
  1080. X  #endif
  1081. X          flags.move = 0;
  1082. X***************
  1083. X*** 331,344 ****
  1084. X      }
  1085. X  
  1086. X      /* warn the player if we can't write the record file */
  1087. X      if(wr) {
  1088. X          register int fd;
  1089. X  
  1090. X          if(dir == NULL)
  1091. X          dir = "";
  1092. X!         if((fd = open(RECORD, 2)) < 0) {
  1093. X!         Printf("Warning: cannot write %s%s", dir, RECORD);
  1094. X!         getret();
  1095. X          } else
  1096. X          (void) close(fd);
  1097. X      }
  1098. X--- 335,353 ----
  1099. X      }
  1100. X  
  1101. X      /* warn the player if we can't write the record file */
  1102. X+     /* perhaps we should also test whether . is writable */
  1103. X+     /* unfortunately the access systemcall is worthless */
  1104. X      if(wr) {
  1105. X          register int fd;
  1106. X  
  1107. X          if(dir == NULL)
  1108. X          dir = "";
  1109. X!         if((fd = open(RECORD, O_RDWR)) < 0) {
  1110. X!         if((fd = open(RECORD, O_CREAT|O_RDWR, FCMASK)) < 0) {
  1111. X!             Printf("Warning: cannot write %s/%s", dir, RECORD);
  1112. X!             getret();
  1113. X!         } else
  1114. X!             (void) close(fd);
  1115. X          } else
  1116. X          (void) close(fd);
  1117. X      }
  1118. X***************
  1119. X*** 366,372 ****
  1120. X  static void
  1121. X  byebye()
  1122. X  {
  1123. X!     void (*hup)();
  1124. X      extern unsigned int dosh_pid;
  1125. X  
  1126. X      /* SIGHUP doesn't seem to do anything on VMS, so we fudge it here... */
  1127. X--- 375,381 ----
  1128. X  static void
  1129. X  byebye()
  1130. X  {
  1131. X!     int (*hup)();
  1132. X      extern unsigned int dosh_pid;
  1133. X  
  1134. X      /* SIGHUP doesn't seem to do anything on VMS, so we fudge it here... */
  1135. X*** vms/Old/vmsunix.c    Mon Feb 19 16:43:44 1990
  1136. X--- vms/vmsunix.c    Tue Feb  6 19:02:25 1990
  1137. X***************
  1138. X*** 23,28 ****
  1139. X--- 23,30 ----
  1140. X  #undef off_t
  1141. X  #include <sys/stat.h>
  1142. X  
  1143. X+ int FDECL(link, (const char *, const char *));
  1144. X+ 
  1145. X  void
  1146. X  setrandom()
  1147. X  {
  1148. X***************
  1149. X*** 197,203 ****
  1150. X          if((fd = open(lock, 0)) == -1) {
  1151. X              if(errno == ENOENT) goto gotlock;    /* no such file */
  1152. X              perror(lock);
  1153. X!             (void) delete(LLOCK);
  1154. X              error("Cannot open %s", lock);
  1155. X          }
  1156. X  
  1157. X--- 199,205 ----
  1158. X          if((fd = open(lock, 0)) == -1) {
  1159. X              if(errno == ENOENT) goto gotlock;    /* no such file */
  1160. X              perror(lock);
  1161. X!             (void) unlink(LLOCK);
  1162. X              error("Cannot open %s", lock);
  1163. X          }
  1164. X  
  1165. X***************
  1166. X*** 206,218 ****
  1167. X          (void) close(fd);
  1168. X      } while(i < locknum);
  1169. X  
  1170. X!     (void) delete(LLOCK);
  1171. X      error(locknum ? "Too many hacks running now."
  1172. X                : "There is a game in progress under your name.");
  1173. X  gotlock:
  1174. X      fd = creat(lock, FCMASK);
  1175. X!     if(delete(LLOCK) == -1)
  1176. X!         error("Cannot delete %s.", LLOCK);
  1177. X      if(fd == -1) {
  1178. X          error("cannot creat lock file.");
  1179. X      } else {
  1180. X--- 208,220 ----
  1181. X          (void) close(fd);
  1182. X      } while(i < locknum);
  1183. X  
  1184. X!     (void) unlink(LLOCK);
  1185. X      error(locknum ? "Too many hacks running now."
  1186. X                : "There is a game in progress under your name.");
  1187. X  gotlock:
  1188. X      fd = creat(lock, FCMASK);
  1189. X!     if(unlink(LLOCK) == -1)
  1190. X!         error("Cannot unlink %s.", LLOCK);
  1191. X      if(fd == -1) {
  1192. X          error("cannot creat lock file.");
  1193. X      } else {
  1194. X***************
  1195. X*** 242,248 ****
  1196. X  }
  1197. X  
  1198. X  int link(file, new)
  1199. X! char *file, *new;
  1200. X  {
  1201. X      int status;
  1202. X      struct FAB fab;
  1203. X--- 244,250 ----
  1204. X  }
  1205. X  
  1206. X  int link(file, new)
  1207. X! const char *file, *new;
  1208. X  {
  1209. X      int status;
  1210. X      struct FAB fab;
  1211. X***************
  1212. X*** 298,304 ****
  1213. X  
  1214. X  #undef unlink
  1215. X  int unlink(file)
  1216. X! char *file;
  1217. X  {
  1218. X      int status;
  1219. X      struct FAB fab = cc$rms_fab;
  1220. X--- 300,306 ----
  1221. X  
  1222. X  #undef unlink
  1223. X  int unlink(file)
  1224. X! const char *file;
  1225. X  {
  1226. X      int status;
  1227. X      struct FAB fab = cc$rms_fab;
  1228. X***************
  1229. X*** 306,312 ****
  1230. X      char esa[NAM$C_MAXRSS];
  1231. X  
  1232. X      fab.fab$l_fop = FAB$M_DLT;
  1233. X!     fab.fab$l_fna = file;
  1234. X      fab.fab$b_fns = strlen(file);
  1235. X      fab.fab$l_nam = &nam;
  1236. X      nam.nam$l_esa = esa;
  1237. X--- 308,314 ----
  1238. X      char esa[NAM$C_MAXRSS];
  1239. X  
  1240. X      fab.fab$l_fop = FAB$M_DLT;
  1241. X!     fab.fab$l_fna = (char *) file;
  1242. X      fab.fab$b_fns = strlen(file);
  1243. X      fab.fab$l_nam = &nam;
  1244. X      nam.nam$l_esa = esa;
  1245. X*** /dev/null    Mon Feb 19 22:05:28 1990
  1246. X--- include/MacAlert.h    Fri Feb 16 19:04:41 1990
  1247. X***************
  1248. X*** 0 ****
  1249. X--- 1,66 ----
  1250. X+ /*    SCCS Id: @(#)MacAlert.h        3.0    90/01/06
  1251. X+ /*      Copyright (c) Jon Watte  1989        */ 
  1252. X+ /* NetHack may be freely redistributed.  See license for details. */
  1253. X+ 
  1254. X+ #ifndef MACALERT_H
  1255. X+ #define MACALERT_H
  1256. X+ 
  1257. X+ #define MAtype 'MAlt'
  1258. X+ 
  1259. X+ 
  1260. X+ typedef struct Malrt {
  1261. X+     int width;
  1262. X+     int height;
  1263. X+     int PICTno;
  1264. X+     char text[256];
  1265. X+     char but1[32];
  1266. X+     char but2[32];
  1267. X+     char but3[32];
  1268. X+     char but4[32];
  1269. X+     int def;
  1270. X+     int esc;
  1271. X+ } MAlrt, * MAlrtPtr, ** MAlrtHandle;
  1272. X+ 
  1273. X+ 
  1274. X+ extern int UseMacAlert(int MAno);
  1275. X+ extern int UseMacAlertText(int MAno, char * txt);
  1276. X+ extern int MacAlert(int width, int height, int PICTno, char * text,
  1277. X+     char * but1, char * but2, char * but3, char * but4, int def, int esc);
  1278. X+ extern int TrackThem(Rect * b_rect, char * hi_lite, int no_butts);
  1279. X+ extern int mac_more(FILE * fp, int strip);
  1280. X+ 
  1281. X+ /* Minimum values to which given values will be justified if lower */
  1282. X+ 
  1283. X+ #define MIN_WIDTH 170
  1284. X+ #define MIN_HEIGHT 100
  1285. X+ 
  1286. X+ /* Good values for a "normal" alert */
  1287. X+ 
  1288. X+ #define WIDTH 250
  1289. X+ #define HEIGHT 200
  1290. X+ 
  1291. X+ /* Constants to tweak how to draw the buttons */
  1292. X+ 
  1293. X+ #define BUT_HEIGHT 20
  1294. X+ #define BUT_WIDTH 50
  1295. X+ #define BUT_SPACING 10
  1296. X+ #define BUT_MARGIN 5
  1297. X+ #define BUT_CORNER 10
  1298. X+ 
  1299. X+ /* Frame around the default button */
  1300. X+ 
  1301. X+ #define FRAME_WIDTH 3
  1302. X+ #define FRAME_OFFSET 1
  1303. X+ #define FRAME_CORNER 16
  1304. X+ 
  1305. X+ /* How to draw the border */
  1306. X+ 
  1307. X+ #define BORDER_PAT 5
  1308. X+ #define BORDER_WIDTH 3
  1309. X+ 
  1310. X+ /* How long to mark the pressed ? */
  1311. X+ 
  1312. X+ #define FLASH_TIME 10 /* In ticks */
  1313. X+ 
  1314. X+ 
  1315. X+ #endif
  1316. X*** include/Old/amiconf.h    Mon Feb 19 22:05:40 1990
  1317. X--- include/amiconf.h    Mon Feb 19 18:16:01 1990
  1318. X***************
  1319. X*** 4,18 ****
  1320. X  #ifndef AMICONF_H
  1321. X  #define AMICONF_H
  1322. X  
  1323. X! #define MSDOS           /* must be defined to allow some inclusions */
  1324. X! #define AMIGA           /* and for some other inclusions */
  1325. X  
  1326. X! #define O_BINARY        0
  1327. X! #define remove(x)       unlink(x)
  1328. X  
  1329. X! #define DGK             /* You'll probably want this; define it in PCCONF.H */
  1330. X  #define RANDOM
  1331. X  
  1332. X  #ifndef MSDOS_H
  1333. X  #include "msdos.h"
  1334. X  #endif
  1335. X--- 4,55 ----
  1336. X  #ifndef AMICONF_H
  1337. X  #define AMICONF_H
  1338. X  
  1339. X! #undef abs        /* avoid using macro form of abs */
  1340. X! #undef min        /* this gets redefined */
  1341. X! #undef max        /* this gets redefined */
  1342. X  
  1343. X! #include <time.h>    /* get time_t defined before use! */
  1344. X! 
  1345. X! #ifdef LATTICE        /* since Lattice can prevent re-inclusion */
  1346. X! #include <stdlib.h>    /* and other things, including builtins */
  1347. X! #if (__VERSION__==5) && (__REVISION__<=4)
  1348. X!     /* This enables a fix in src/mondata.c needed to bypass a compiler
  1349. X!     bug.  If you need it and don't have it you will get monsndx panics and
  1350. X!     monsters that change type when they die and become corpses.
  1351. X!     If you don't need it and do have it, even wierder things will happen. */
  1352. X! #   define LATTICE_504_BUG
  1353. X! #endif
  1354. X! #endif
  1355. X  
  1356. X! #ifdef LATTICE        /* Lattice defines DEBUG when you use -d1 which */
  1357. X! # ifdef DEBUG        /* we need for useful SnapShots, but DEBUG is   */
  1358. X! #  undef DEBUG        /* used in several files to turn on things we   */
  1359. X! # endif            /* don't want (e.g. eat.c), so we get rid of    */
  1360. X! #endif            /* DEBUG unless asked for in a particular file  */
  1361. X! 
  1362. X! typedef long off_t;
  1363. X! 
  1364. X! #define MSDOS        /* must be defined to allow some inclusions */
  1365. X! 
  1366. X! #define O_BINARY    0
  1367. X! 
  1368. X! #define DGK        /* You'll probably want this; provides assistance
  1369. X!              * for typical personal computer configurations
  1370. X!              */
  1371. X  #define RANDOM
  1372. X  
  1373. X+ extern void FDECL(exit, (int));
  1374. X+ extern void NDECL(CleanUp);
  1375. X+ extern void FDECL(Abort, (long));
  1376. X+ extern int NDECL(getpid);
  1377. X+ extern char *FDECL(CopyFile, (const char *, const char *));
  1378. X+ extern int NDECL(WindowGetchar);
  1379. X+ extern void FDECL(WindowPutchar, (CHAR_P));
  1380. X+ extern void FDECL(WindowPuts, (const char *));
  1381. X+ extern void FDECL(WindowFPuts, (const char *));
  1382. X+ extern void VDECL(WindowPrintf, (const char *, ...));
  1383. X+ extern void FDECL(WindowFlush, (void));
  1384. X+ 
  1385. X  #ifndef MSDOS_H
  1386. X  #include "msdos.h"
  1387. X  #endif
  1388. X***************
  1389. X*** 20,36 ****
  1390. X  #include "pcconf.h"     /* remainder of stuff is almost same as the PC */
  1391. X  #endif
  1392. X  
  1393. X  #define memcpy(dest, source, size)  movmem(source, dest, size)
  1394. X  
  1395. X  /*
  1396. X   *  Configurable Amiga options:
  1397. X   */
  1398. X  
  1399. X! #define TEXTCOLOR              /* Use colored monsters and objects */
  1400. X! #define HACKFONT                /* Use special hack.font */
  1401. X! #define SHELL                   /* Have a shell escape command (!) */
  1402. X! #define MAIL                    /* Get mail at unexpected occasions */
  1403. X! #undef  TERMLIB
  1404. X! #define fopen       fopenp      /* Open most text files according to PATH */
  1405. X  
  1406. X! #endif /* AMICONF_H /* */
  1407. X--- 57,112 ----
  1408. X  #include "pcconf.h"     /* remainder of stuff is almost same as the PC */
  1409. X  #endif
  1410. X  
  1411. X+ #ifndef LATTICE
  1412. X  #define memcpy(dest, source, size)  movmem(source, dest, size)
  1413. X+ #endif
  1414. X+ #define remove(x)       unlink(x)
  1415. X+ 
  1416. X+ #ifdef LATTICE
  1417. X+ #define FFLUSH(fp) _flsbf(-1, fp)    /* Was fflush */
  1418. X+ #endif
  1419. X+ 
  1420. X+ #ifdef AZTEC_C
  1421. X+ #define FFLUSH(fp) flsh_(fp, -1)     /* Was fflush */
  1422. X+ extern FILE *FDECL(freopen, (const char *, const char *, FILE *));
  1423. X+ extern char *FDECL(gets, (char *));
  1424. X+ #endif
  1425. X+ 
  1426. X+ /* Use Window functions if not in makedefs.c or lev_lex.c */
  1427. X+ 
  1428. X+ #if !defined(MAKEDEFS_C) && !defined(LEV_LEX_C)
  1429. X+ 
  1430. X+ #define fopen        fopenp    /* Open most text files according to PATH */
  1431. X+ 
  1432. X+ #undef getchar
  1433. X+ #undef putchar
  1434. X+ #undef fflush
  1435. X+ # ifdef LATTICE
  1436. X+ #undef printf
  1437. X+ # endif
  1438. X+ 
  1439. X+ #define getchar()   WindowGetchar()
  1440. X+ #define putchar(c)  WindowPutchar(c)
  1441. X+ #define puts(s)     WindowPuts(s)
  1442. X+ #define fputs(s,f)  WindowFPuts(s)
  1443. X+ #define printf        WindowPrintf
  1444. X+ #define fflush(fp)  WindowFlush()
  1445. X+ 
  1446. X+ #define xputs        WindowFPuts
  1447. X+ #define xputc        WindowPutchar
  1448. X+ 
  1449. X+ #endif
  1450. X  
  1451. X  /*
  1452. X   *  Configurable Amiga options:
  1453. X   */
  1454. X  
  1455. X! #define TEXTCOLOR        /* Use colored monsters and objects */
  1456. X! #define HACKFONT        /* Use special hack.font */
  1457. X! #define SHELL            /* Have a shell escape command (!) */
  1458. X! #define MAIL            /* Get mail at unexpected occasions */
  1459. X! #define AMIGA_WBENCH        /* Icon support */
  1460. X! #define DEFAULT_ICON "NetHack:default.icon"    /* private icon for above */
  1461. X! #undef    TERMLIB
  1462. X  
  1463. X! #endif /* AMICONF_H */
  1464. X
  1465. END_OF_FILE
  1466. if test 55711 -ne `wc -c <'patch7.17'`; then
  1467.     echo shar: \"'patch7.17'\" unpacked with wrong size!
  1468. fi
  1469. # end of 'patch7.17'
  1470. echo shar: End of archive 9 \(of 30\).
  1471. cp /dev/null ark9isdone
  1472. MISSING=""
  1473. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
  1474.     if test ! -f ark${I}isdone ; then
  1475.     MISSING="${MISSING} ${I}"
  1476.     fi
  1477. done
  1478. if test "${MISSING}" = "" ; then
  1479.     echo You have unpacked all 30 archives.
  1480.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1481. else
  1482.     echo You still need to unpack the following archives:
  1483.     echo "        " ${MISSING}
  1484. fi
  1485. ##  End of shell archive.
  1486. exit 0
  1487.